package br.com.absolutech.study.chapter6.pag264;

import java.text.DateFormat;
import java.text.NumberFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class DatesAndNumberCommonsUsages {

	public static void main(String[] args) {

		/* 1:
		 * Obter a data e a hora atuais
		 */

		// Crie um Date
		Date d1 = new Date();
		// obtenha o seu valor
		System.out.println("1: " + d1.toString());
		System.out.println("");


		/* 2:
		 * Obter um objeto que lhe permita ralizar calculos de data e hora no seu local
		 */

		// Crie um Calendar
		Calendar c1 = Calendar.getInstance();
		System.out.println("2: " + c1.toString());
		// Use c.add e c.roll para realizar manipulacoes de data e hora.
		c1.add(Calendar.MONTH, 1);
		System.out.println("2: " + c1.toString());
		System.out.println("");


		/* 3:
		 * Obter um objeto que lhe permita realizar calculos de data e hora em um local diferente
		 */

		// Crie um locale
		Locale loc1 = new Locale("pt", "br");
		// Crie um Calendar para este local
		Calendar c2 = Calendar.getInstance(loc1);
		// Use c.add e c.roll para realizar manipulacoes de data e hora.


		/* 4:
		 * Obter um objeto que lhe permita realizar calculos de data e hora , e depois formatar o
		 *  resultado em diferentes locais com diferentes estilos de datas
		 */

		// Crie um Calendar
		Calendar c3 = Calendar.getInstance();

		// crie um Locale para cada local
		Locale loc2 = new Locale("pt", "br");
		Locale loc3 = new Locale("en");

		// converta seu calendar em um date
		Date d2 = c3.getTime();

		// crie um DateFormat para cada Locale
		DateFormat df1 = DateFormat.getDateInstance(DateFormat.DEFAULT, loc2);
		DateFormat df2 = DateFormat.getDateInstance(DateFormat.DEFAULT, loc3);

		// use o metodo format() para criar datas formatadas
		System.out.println("4: " + df1.format(d2));
		System.out.println("4: " + df2.format(d2));
		System.out.println("");


		/* 5:
		 * Obter um objeto que lhe permita formatar numeros ou moedas em diversos locais
		 */

		// crie um Locale para cada local
		Locale loc4 = new Locale("pt", "br");
		Locale loc5 = new Locale("en");

		// crie um NumberFormat para cada Locale
		NumberFormat nf1 = NumberFormat.getInstance(loc4); //getInstance ou getCurrencyInstance
		NumberFormat nf2 = NumberFormat.getInstance(loc5);
		
	// use o metodo format() para criar saidas formatadas
		System.out.println("5: " + nf1.format(1222L));
		System.out.println("5: " + nf2.format(1222L));
		System.out.println("");
	}
}
